//package Demo1_28;
//
///**
// * Created with IntelliJ IDEA.
// * Description:
// * User：Lenovo
// * Date:2025-01-28
// * Time:20:12
// */
//// 定义链表节点类
//class ListNode {
//    int val;
//    ListNode next;
//
//    // 构造函数，用于初始化节点的值
//    ListNode(int x) {
//        val = x;
//        next = null;
//    }
//}
//
//public class LinkedListCycle {
//    // 判断链表是否有环的方法
//    public boolean hasCycle(ListNode head) {
//        // 如果链表为空或者只有一个节点，肯定没有环
//        if (head == null || head.next == null) {
//            return false;
//        }
//        // 慢指针，初始指向头节点，每次移动一步
//        ListNode slow = head;
//        // 快指针，初始指向头节点的下一个节点，每次移动两步
//        ListNode fast = head.next;
//        // 当慢指针和快指针不相等时，继续循环
//        while (slow != fast) {
//            // 如果快指针到达链表末尾或者快指针的下一个节点是末尾，说明没有环
//            if (fast == null || fast.next == null) {
//                return false;
//            }
//            // 慢指针移动一步
//            slow = slow.next;
//            // 快指针移动两步
//            fast = fast.next.next;
//        }
//        // 如果跳出循环，说明慢指针和快指针相遇了，链表有环
//        return true;
//    }
//
//    public static void main(String[] args) {
//        // 创建有环链表 1 -> 2 -> 3 -> 4 -> 2（环从节点 2 开始）
//        ListNode node1 = new ListNode(1);
//        ListNode node2 = new ListNode(2);
//        ListNode node3 = new ListNode(3);
//        ListNode node4 = new ListNode(4);
//
//        // 构建链表连接关系
//        node1.next = node2;
//        node2.next = node3;
//        node3.next = node4;
//        // 形成环
//        node4.next = node2;
//
//        // 创建 LinkedListCycle 类的实例
//        LinkedListCycle solution = new LinkedListCycle();
//        // 调用 hasCycle 方法判断链表是否有环
//        boolean result = solution.hasCycle(node1);
//        System.out.println("链表是否有环: " + result);
//
//        // 创建无环链表 1 -> 2 -> 3 -> 4
//        ListNode nodeA = new ListNode(1);
//        ListNode nodeB = new ListNode(2);
//        ListNode nodeC = new ListNode(3);
//        ListNode nodeD = new ListNode(4);
//
//        // 构建无环链表连接关系
//        nodeA.next = nodeB;
//        nodeB.next = nodeC;
//        nodeC.next = nodeD;
//
//        // 再次调用 hasCycle 方法判断无环链表是否有环
//        result = solution.hasCycle(nodeA);
//        System.out.println("链表是否有环: " + result);
//    }
//}
